10.7 Príprava ponuky
Ponuka - je umožnenie užívateľovi vybrať z konkrétnych možností a čakanie na jeho voľbu. Možnosť výberu ponúkame do tej doby, kým užívateľ sa nerozhodne ukončiť výber a vrátiť sa k vykonávaniu určitej časti alebo k jeho ukončeniu. Slovný popis algoritmu tvorby ponuky (ponuka je typický príklad vzadu testovaného cyklu):
 |
Musíme zabezpečiť, aby informácie boli jasné a jednoznačné. Užívateľovi musí byť jasné, že má voliť a z čoho má voliť (aké má možnosti). Ak potrebné informácie sa nachádzali na obrazovke už aj predtým, potom doporučuje sa kurzor umiestniť na dané miesto na obrazovke.
Uvedieme algoritmus všeobecného prípadu:
 |
Zdrojový program uvedieme pre konkrétnejší prípad:
10.8 Vyhľadávanie
V týchto úlohách hľadáme prvok s danými vlastnosťami. Algoritmus by mal určiť, či existuje taký prvok a ak je, potom ktorý je v poradí (počítame od 1). Všeobecný algoritmus pre N prvkov:
 |
pre neznámy počet prvkov (napríklad pri načítaní do koncového znaku):
 |
ak je "nekonečne" veľa Prvkov a hľadáme do tej doby, kým nenájdeme Prvok s danou vlastnosťou, potom
 |
Spresnenie, zoznam podmienok, zoznam činností
Vo všeobecnosti nedokážeme v Jacksonovom diagrame uviesť všetky podmienky a znázorniť všetky činnosti, resp. uviesť ich v plnom znení. Ani nie je to nutné, lebo príliš veľa informácií pôsobí rušivo a náš diagram sa v takom prípade stáva neprehľadným. V takýchto prípadoch danú podmienku alebo činnosť označíme číslom alebo podčiarkneme a spresňujeme na inom mieste. Spresnenie sa robí pomocou pripojeného zoznamu podmienok, zoznamu činností alebo na zvláštneho Jacksonového diagramu. Pravidlá:
- Pripojený zoznam podmienok resp. činností môže obsahovať:
- logický výraz (podmienku), resp. Pascalovský príkaz;
- krátky, jasný popis;
- poznámku;
- alebo odkaz na zvlášť zadaný Jacksonov diagram.
- Daný zoznam môže patriť aj k viacerým Jacksonovým diagramom, len je nutné aby spolupatričnosť bola jednoznačná.
- Číslovanie: Očíslované podmienky, resp. činnosti musia figurovať v zozname.
- Číslovanie podmienok: F1, F2, F3, ... (ľubovolné kladné celé číslo začínajúce sa na písmeno F).
- Číslovanie činností: 1, 2, 3, ... (ľubovolné kladné celé číslo).
Číslovane nemusí byť nutne súvislé. Dokonca môžeme vynechávať čísla.
- Podčiarkovanie: Podčiarkovanie označuje spresnenie. Miesto spresnenia:
- v prvom rade pripojený zoznam podmienok, resp. zoznam činností;
- v druhom rade zvláštny Jacksonov diagram.
- Aj v zozname môže byť podčiarkovanie. Toto znamená ďalší odkaz, v prvom rade na inú podmienku alebo činnosť, a v druhom rade na ďalší Jacksonov diagram.
Pri spresnení musíme dávať pozor na nasledujúce:
- Podmienky a činnosti uvedené v Jacksonovom diagrame pomocou čísel, podčiarknutia alebo priamo napísané - môžeme "miešať", ale musíme dávať pozor na to, aby boli logické a dali sa ľahko sledovať!
- V prípade známych algoritmov stačí sa odvolať na daný algoritmus, ale musíme určiť presne čo bude robiť a s ktorými údajmi.
Homogenizácia
Všeobecné pravidlo v Jacksonových diagramoch je to, že pod jednou krabičkou (jeho spresnenie) môžu byť iba sekvencie, alebo selekcie, alebo iba jedná krabička(!) s hviezdičkou (iterácia). Toto pravidlo môžeme narušiť iba nakreslením podstatne menších krabičiek a ich umiestnením trochu vyššie vpravo alebo vľavo od základných prvkov algoritmu. Musíme dodržať nasledujúce:
- Doplnkové krabičky nesmú byť selekcie (krúžok) alebo iterácie (hviezdička);
- Nevkladáme doplnkové krabičky medzi prvky selekcie.
Doplnkových krabičiek sa môžeme zbaviť vložením ďalšej úrovne do Jacksonovho diagramu. Táto činnosť sa nazýva homogenizáciou. Homogenizovať zvykneme ak:
- je príliš veľa nehomogenizovaných činností, alebo
- prehľadnosť algoritmu sa od toho zlepší.
10.9 Určenie minima a maxima
Určiť minimum resp. maximum znamená porovnať prvky postupnosti údajov a zapamätať minimálne resp. maximálne z nich. Musíme dávať veľký pozor, aby počiatočná hodnota bola vhodná. V prípade hľadania minima - dostatočne veľká a v prípade hľadania maxima - dostatočne malá. Najvhodnejšie je zobrať za počiatočnú hodnotu prvý prvok postupnosti údajov.
Algoritmus pre známy počet (N) prvkov:
V nasledujúcom prípade nevieme vopred koľko prvkov budeme mať, ale budeme predpokladať, že hodnoty prvkov sú kladné a menšie než $FFFF. Potom koncovým znakom môžu byť 0, počiatočnou hodnotou pre hľadanie minima - číslo $FFFF a 0 pre hľadanie maxima. Prípad, keď neboli načítané žiadne hodnoty, musíme spracovať zvlášť - v tomto prípade sa nebudú vykonávať žiadne porovnávania.
V prípade viacerých vstupných hodnôt pri vopred neznámom počte prvkov (načítanie do koncového znaku) teoreticky môžeme vstup údajov riešiť dvoma spôsobmi:
- vždy pred načítaním skupiny hodnôt zistíme, čí ešte máme čo načítať. V tomto prípade užívateľ bude musieť odpovedať na otázku čí sú ďalšie hodnoty.
- prvá hodnota zo vstupnej skupiny bude testovaná na koncový znak. V tomto prípade musíme zabezpečiť aby užívateľ nemusel zadávať po načítaní koncového znaku zbytočne ostatné hodnoty skupiny, ktoré aj tak sa nebudú používať.
|